/******************************************************************************
 * @File name   :      IMaintainCarPlateDao.java
 *
 * @Author      :      ANMA
 *
 * @Date        :      Jul 21, 2015
 *
 * @Copyright Notice: 
 * Copyright (c) 2014 DMS, Inc. All  Rights Reserved.
 * This software is published under the terms of the DMS Software
 * License version 1.0, a copy of which has been included with this
 * distribution in the LICENSE.txt file.
 * 
 * ----------------------------------------------------------------------------
 * Date                         Who         Version         Comments
 * Jul 21, 2015 5:18:41 PM    ANMA      1.0            Initial Version
 *****************************************************************************/
package com.cap.bts.crmdp.dealer.member.dao;

import java.util.List;

import com.cap.bts.crmdp.dealer.member.domain.CarPlateInfo;
import com.cap.bts.framework.common.dao.IBaseDao;
import com.cap.bts.framework.common.exception.AppException;

/**
 * 
 */
public interface IMaintainCarPlateDao extends IBaseDao<CarPlateInfo, Long> {

	
	/**
	 * 根据dto获取List<CarPlateInfo>
	 * @Date        :      2015-7-20
	 * @param dto
	 * @return
	 * @throws AppException
	 */
	public List<CarPlateInfo> getCarPlateInfoListByCarPlateOrMemberId(String carPlate, Long memberId) throws AppException;
	/**
	 * @Date        :      2015年8月12日
	 * @param carPlate
	 * @param memberId
	 * @return
	 * @throws AppException
	 */
	public int getCountUsingPackageCarPlateId(Long id) throws AppException;
	/**
	 * @Date        :      2015年8月17日
	 * @param carPlate
	 * @param memberId
	 * @return
	 * @throws AppException
	 */
	public List<CarPlateInfo> getCarPlateInfoListByCarPlateAndMemberId(String carPlate, Long memberId) throws AppException;
	/**
	 * @Date        :      2015年8月25日
	 * @param dealerId
	 * @param carPlate
	 * @param memberId
	 * @return
	 * @throws AppException
	 */
	public List<CarPlateInfo> getCarPlateListWithPackage(Long dealerId, Long carPlateId, Long memberId) throws AppException;
	/**
	 * @Date        :      2015年9月6日
	 * @param carPlateInfo
	 * @throws AppException
	 */
	public void updateCarPlateByCarPlateInfo(CarPlateInfo carPlateInfo, Long newMemberId) throws AppException;
	/**
	 * @Date        :      2015年9月6日
	 * @param id
	 * @param carPlate
	 * @throws AppException
	 */
	public void updateCarPlateForMember(Long id, String carPlate, int updateTimes) throws AppException;
	/**
	 * @Date        :      2015年9月6日
	 * @param id
	 * @return
	 * @throws AppException
	 */
	public CarPlateInfo getCarPlateInfoById(Long id) throws AppException;
	
	/**
	 * getCarPlateInfoByCarId
	 * @param carId
	 * @return
	 */
	CarPlateInfo getCarPlateInfoByMarsInfo(String marsCarId, Long memberId);
	
	public void updateCarPlate(CarPlateInfo carPlateInfo) throws AppException;
	
	/**
	 * @Date        :      2015年10月15日
	 * @param carPlate
	 * @return
	 * @throws AppException
	 */
	public List<CarPlateInfo> getCarPlateInfoListByCarPlate(String carPlate) throws AppException;
	
	/**
	 * @Date        :      2015年10月26日
	 * @param carPlate
	 * @return
	 * @throws AppException
	 */
	public List<CarPlateInfo> getCarPlateInfoListByCarPlateForMars(Long dearId, String carPlate) throws AppException;
	
	
	public CarPlateInfo getCarPlateInfoByMarsCarId(String carId);
	
	public CarPlateInfo getCarPlateInfoByMarsCarIdAndMemberId(String carId, Long memberId);
	
	public CarPlateInfo getCarPlateInfoByMarsCarIdAndMarsMemberId(String marsCarId, String marsMemberId) ;
}
